/*
 * Hoja de Trabajo No. 2
 * Josué Barrientos - 09049
 */
package ht2;

import java.util.Vector;

/**
 * Implementacion de un Stack haciendo uso de un Vector.
 * @author Josué Barrientos - 09049
 * @param E El tipo de dato que se va a trabajar
 */
public class StackVector<E> implements Stack<E>{
    
    /**
     * Vector que se utiliza para implementar la pila.
     */
    protected Vector<E> data;
    
    /**
     * Crea el Vector que es la pila.
     */
    public StackVector()
    {
    data = new Vector<>();
    }
    
    /**
     * {@inheritDoc}
     * @pre -
     * @post El item se añade a la pila.
     */
    @Override
    public void push(E item) 
    {
    data.add(item);
    }
    
    /**
     * {@inheritDoc}
     * @pre La pila no debe estar vacia
     * @post -
     */
    @Override
    public E pop() 
    {
    return data.remove(size()-1);
    }

    /**
     * {@inheritDoc}
     * @pre La pila no debe estar vacia
     * @post -
     */
    @Override
    public E peek() 
    {
    return data.get(size() - 1);
    }
    
    /**
     * {@inheritDoc}
     * @pre -
     * @post -
     */
    @Override
    public boolean empty()
    {
    return size() == 0;
    }
    
    /**
     * {@inheritDoc}
     * @pre -
     * @post -
     */
    @Override
    public int size() 
    {
    return data.size();
    }
    
}
